#pragma once

/**
 * 封装套接字
 */


#include <string>
#include <stdint.h>

class TCPSocket {
public:
    TCPSocket();
    ~TCPSocket();

    // 服务端绑定监听
    bool bindAndListen(const std::string& ip, uint16_t port, int backlog = 5);

    // 服务端 accept 返回新连接 socket
    int accept();

    // 客户端连接远程服务器
    bool connect(const std::string& ip, uint16_t port);

    // 关闭套接字
    void close();

    // 获取套接字fd，供 TLSConnection 使用
    int getFd() const;

private:
    int sockfd_;
};
